//
// ========================================================================
// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others.
//
// This program and the accompanying materials are made available under the
// terms of the Eclipse Public License v. 2.0 which is available at
// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
// which is available at https://www.apache.org/licenses/LICENSE-2.0.
//
// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
// ========================================================================
//

package org.eclipse.jetty.client;

import org.eclipse.jetty.util.ConcurrentPool;
import org.eclipse.jetty.util.annotation.ManagedObject;

/**
 * <p>A connection pool that provides connections for both directions of communication.
 * This pool uses a {@link ConcurrentPool} with {@link ConcurrentPool.StrategyType#FIRST}
 * to manage connections efficiently.</p>
 */
@ManagedObject
public class DuplexConnectionPool extends AbstractConnectionPool
{
    /**
     * Creates a duplex connection pool for the given destination.
     *
     * @param destination the destination for which this pool provides connections
     * @param maxConnections the maximum number of connections in the pool
     */
    public DuplexConnectionPool(Destination destination, int maxConnections)
    {
        super(destination, () -> new ConcurrentPool<>(ConcurrentPool.StrategyType.FIRST, maxConnections), 1);
    }
}
